﻿using Datos.Repositories;
using Entidad;
using Servicios;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace RealGestion_Web.Controllers
{
    public class ProveedorController : Controller
    {
        //
        // GET: /Proveedor/

        public ActionResult Index()
        {
            ProveedorServices proveedorSvc = new ProveedorServices(new ProveedorRepository());
            IList<Proveedor> datos = proveedorSvc.FindAll();
            return View(datos);
        }

        [HttpGet]
        public ActionResult Crear()
        {
            TipoIvaServices tipoivaSvc = new TipoIvaServices(new TipoIvaRepository());
            ViewData["ivas"] = new SelectList(tipoivaSvc.FindAll(), "Id", "Denominacion");

            CiudadServices ciudadSvc = new CiudadServices(new CiudadRepository());
            ViewData["ciudades"] = new SelectList(ciudadSvc.FindAll(), "Id", "Nombre");

            EstadoServices estadoSvc = new EstadoServices(new EstadoRepository());
            ViewData["estados"] = new SelectList(estadoSvc.FindAll(), "Id", "Denominacion");

            ActividadServices actividadSvc = new ActividadServices(new ActividadRepository());
            ViewData["actividades"] = new SelectList(actividadSvc.FindAll(), "Id", "Denominacion");

            return View();
        }

        [HttpPost]
        public ActionResult Crear(Proveedor proveedor)
        {
            ProveedorServices proveedorSvc = new ProveedorServices(new ProveedorRepository());
            int resultado = proveedorSvc.Add(proveedor);
            if (resultado > 0)
                return RedirectToAction("Index");
            else
                return View();
        }

        [HttpPost]
        public ActionResult FindByRazonSocial(string razonSocial)
        {
            ProveedorServices proveedorSvc = new ProveedorServices(new ProveedorRepository());
            IList<Proveedor> datos = proveedorSvc.FindByRazonSocial(razonSocial);

            return PartialView("Index", datos);
        }


        public ActionResult FindById(int id)
        {
            TipoIvaServices tipoivaSvc = new TipoIvaServices(new TipoIvaRepository());
            ViewData["ivas"] = new SelectList(tipoivaSvc.FindAll(), "Id", "Denominacion");

            CiudadServices ciudadSvc = new CiudadServices(new CiudadRepository());
            ViewData["ciudades"] = new SelectList(ciudadSvc.FindAll(), "Id", "Nombre");

            EstadoServices estadoSvc = new EstadoServices(new EstadoRepository());
            ViewData["estados"] = new SelectList(estadoSvc.FindAll(), "Id", "Denominacion");

            ActividadServices actividadSvc = new ActividadServices(new ActividadRepository());
            ViewData["actividades"] = new SelectList(actividadSvc.FindAll(), "Id", "Denominacion");

            ProveedorServices proveedorSvc = new ProveedorServices(new ProveedorRepository());
            Proveedor proveedor = proveedorSvc.FindById(id);

            return View("Modificar", proveedor);
        }

        [HttpPost]
        public ActionResult Modificar(Proveedor proveedor)
        {
            ProveedorServices proveedorSvc = new ProveedorServices(new ProveedorRepository());
            int resultado = proveedorSvc.Modify(proveedor);

            return RedirectToAction("Index");           
        }


        public ActionResult Eliminar(int id)
        {
            ProveedorServices proveedorSvc = new ProveedorServices(new ProveedorRepository());
            bool res = proveedorSvc.Remove(id);

            return RedirectToAction("Index");
        }


    }

}